home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.image.ImageObserver;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- public class ScrollTextCanvas2 extends Canvas implements Runnable {
- Thread theThread;
- String textData;
- String[] textLines;
- Image osImage;
- Graphics osg;
- String urlPath;
- Color bkColor;
- Image bkImage;
- int speed;
- int currentY;
- int textHeight;
- int lineCount;
- int increment;
- URL theURL;
- Font textFont;
-
- public void update(Graphics var1) {
- if (this.osImage == null) {
- this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.osg = this.osImage.getGraphics();
- }
-
- this.osg.setColor(((Component)this).getBackground());
- this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- if (this.bkImage != null) {
- int var2 = this.bkImage.getWidth(this);
- int var3 = this.bkImage.getHeight(this);
- int var4 = ((Component)this).size().width / var2;
- int var5 = ((Component)this).size().height / var3;
- ++var4;
- ++var5;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- for(int var7 = 0; var7 < var4; ++var7) {
- this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
- }
- }
- }
-
- this.osg.setColor(Color.black);
- if (this.textLines != null && this.textLines.length > 0) {
- FontMetrics var8 = ((Component)this).getFontMetrics(((Component)this).getFont());
- if (var8 != null) {
- this.textHeight = var8.getHeight();
-
- for(int var9 = 0; var9 < this.textLines.length; ++var9) {
- this.osg.drawString(this.textLines[var9], 0, this.currentY + (var9 + 1) * this.textHeight);
- }
- }
- }
-
- var1.drawImage(this.osImage, 0, 0, (ImageObserver)null);
- }
-
- public ScrollTextCanvas2(Applet var1, int var2) {
- this.GetParameters(var1, var2);
- if (this.urlPath.length() > 0) {
- try {
- this.theURL = new URL(this.urlPath);
- Object var3 = this.theURL.getContent();
- this.textData = var3.toString();
- this.BuildLinesOfText();
- } catch (MalformedURLException var4) {
- System.out.println(((Throwable)var4).getMessage());
- } catch (IOException var5) {
- System.out.println(((Throwable)var5).getMessage());
- }
- }
- }
-
- void GetParameters(Applet var1, int var2) {
- String var3 = var1.getParameter("scrollTextBkColor" + var2);
- this.bkColor = AppletParam2.GetColor(var3, (Color)null);
- if (this.bkColor != null) {
- ((Component)this).setBackground(this.bkColor);
- }
-
- var3 = var1.getParameter("scrollTextBkImage" + var2);
- this.bkImage = var1.getImage(var1.getCodeBase(), var3);
- var3 = var1.getParameter("scrollTextFile" + var2);
- this.urlPath = AppletParam2.GetString(var3, "");
- var3 = var1.getParameter("scrollTextSpeed" + var2);
- this.speed = AppletParam2.GetInt(var3, 250);
- var3 = var1.getParameter("scrollTextIncrement" + var2);
- this.increment = AppletParam2.GetInt(var3, 2);
- var3 = var1.getParameter("scrollTextFont" + var2);
- this.textFont = AppletParam2.GetJavaFont(var3);
- ((Component)this).setFont(this.textFont);
- }
-
- void BuildLinesOfText() {
- int var1 = this.textData.length();
- this.lineCount = 0;
-
- for(int var2 = 0; var2 < var1; ++var2) {
- char var3 = this.textData.charAt(var2);
- if (var3 != '\r' && var3 == '\n') {
- ++this.lineCount;
- }
- }
-
- if (this.textData.charAt(var1 - 1) != '\r' && this.textData.charAt(var1 - 1) != '\n') {
- ++this.lineCount;
- }
-
- if (this.lineCount != 0) {
- this.textLines = new String[this.lineCount];
- int var8 = 0;
- int var4 = 0;
- int var5 = 0;
-
- for(String var6 = ""; var5 < var1; ++var5) {
- char var7 = this.textData.charAt(var5);
- if (var7 != '\r') {
- if (var7 != '\n') {
- var6 = this.textData.substring(var4, var5 + 1);
- } else {
- this.textLines[var8] = var6;
- var4 = var5 + 1;
- var5 = var4;
- ++var8;
- }
- }
- }
-
- }
- }
-
- public synchronized void reshape(int var1, int var2, int var3, int var4) {
- this.osImage = null;
- this.osg = null;
- this.currentY = var4;
- super.reshape(var1, var2, var3, var4);
- }
-
- public Dimension minimumSize() {
- return new Dimension(10, 10);
- }
-
- public Dimension preferredSize() {
- return new Dimension(10, 10);
- }
-
- public void Start() {
- this.theThread = new Thread(this);
- this.theThread.start();
- }
-
- public void Stop() {
- this.theThread.stop();
- this.theThread = null;
- }
-
- public void run() {
- try {
- while(true) {
- ((Component)this).repaint();
- this.currentY -= this.increment;
- if (this.currentY < -(this.textHeight * this.lineCount)) {
- this.currentY = ((Component)this).size().height;
- }
-
- Thread.sleep((long)this.speed);
- }
- } catch (InterruptedException var2) {
- System.out.println(((Throwable)var2).getMessage());
- }
- }
- }
-